home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 139 / 139.xpi / chrome / imagezoom.jar / content / options.js < prev    next >
Text File  |  2010-01-04  |  11KB  |  224 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  
  3.     Copyright (c) 2006-2010  Jason Adams <imagezoom@yellowgorilla.net>
  4.  
  5.     This file is part of Image Zoom.
  6.  
  7.     Image Zoom is free software; you can redistribute it and/or modify
  8.     it under the terms of the GNU General Public License as published by
  9.     the Free Software Foundation; either version 2 of the License, or
  10.     (at your option) any later version.
  11.  
  12.     Image Zoom is distributed in the hope that it will be useful,
  13.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.     GNU General Public License for more details.
  16.  
  17.     You should have received a copy of the GNU General Public License
  18.     along with Image Zoom; if not, write to the Free Software
  19.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20.  
  21.  * ***** END LICENSE BLOCK ***** */
  22. var gData;
  23.  
  24. function optionCache() {
  25.     var optionNames = new Array();
  26.     var optionValues = new Array();
  27.  
  28.     function setOption(optionName, optionValue) {
  29.         for (var i = 0; i < optionNames.length; i++) {
  30.             if (optionNames[i] == optionName) {
  31.                 optionValues[i] = optionValue;
  32.                 return;
  33.             }
  34.         }
  35.  
  36.         optionNames[optionNames.length] = optionName;
  37.         optionValues[optionValues.length] = optionValue;
  38.  
  39.     }
  40.  
  41.     optionCache.prototype.getOption = getOption;
  42.     optionCache.prototype.setOption = setOption;
  43.     optionCache.prototype.length = length;
  44.  
  45.     function getOption(optionName) {
  46.  
  47.         for (var i = 0; i < optionNames.length; i++) {
  48.             if (optionNames[i] == optionName) {
  49.                 return optionValues[i];
  50.             }
  51.         }
  52.  
  53.     }
  54.  
  55.     function length() {
  56.         return optionNames.length;
  57.     }
  58. }
  59.  
  60. // Context Menu Items and their option equivalents
  61. if (net.yellowgorilla.imagezoom.globals.getGeckoVersion() < "1.9") {
  62.     var MenuItems = new Array("context-zoom-zin", "context-zoom-zout", "context-zoom-zreset", "context-zoom-zcustom", "context-zoom-dcustom", "context-zoom-fit", "zoomsub-zin", "zoomsub-zout", "zoomsub-zreset", "zoomsub-zcustom", "zoomsub-dcustom", "zoomsub-fit", "zoomsub-z400", "zoomsub-z200", "zoomsub-z150", "zoomsub-z125", "zoomsub-z100", "zoomsub-z75", "zoomsub-z50", "zoomsub-z25", "zoomsub-z10");
  63.     var OptionItems = new Array("mmZoomIO", "mmZoomIO", "mmReset", "mmCustomZoom", "mmCustomDim", "mmFitWindow", "smZoomIO", "smZoomIO", "smReset", "smCustomZoom", "smCustomDim", "smFitWindow", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts");
  64. } else {
  65.     var MenuItems = new Array("context-zoom-zin", "context-zoom-zout", "context-zoom-zreset", "context-zoom-zcustom", "context-zoom-dcustom", "context-zoom-fit", "context-zoom-rotate-right", "context-zoom-rotate-left", "context-zoom-rotate-180", "context-zoom-rotate-reset", "zoomsub-zin", "zoomsub-zout", "zoomsub-zreset", "zoomsub-rotate-right", "zoomsub-rotate-left", "zoomsub-rotate-180", "zoomsub-rotate-reset", "zoomsub-zcustom", "zoomsub-dcustom", "zoomsub-fit", "zoomsub-z400", "zoomsub-z200", "zoomsub-z150", "zoomsub-z125", "zoomsub-z100", "zoomsub-z75", "zoomsub-z50", "zoomsub-z25", "zoomsub-z10");
  66.     var OptionItems = new Array("mmZoomIO", "mmZoomIO", "mmReset", "mmCustomZoom", "mmCustomDim", "mmFitWindow", "mmRotateRight", "mmRotateLeft", "mmRotate180", "mmRotateReset", "smZoomIO", "smZoomIO", "smReset", "smRotateRight", "smRotateLeft", "smRotate180", "smRotateReset", "smCustomZoom", "smCustomDim", "smFitWindow", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts", "smZoomPcts");
  67. }
  68. var MenuOptions = new optionCache();
  69.  
  70. // Preference Service objects
  71. var nsIPrefServiceObj = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  72. var nsIPrefBranchObj = nsIPrefServiceObj.getBranch("imagezoom.");
  73.  
  74.  
  75. // Save options for Firefox and Thunderbird
  76.  
  77.  
  78. function imagezoom_saveOptions() {
  79.     if (!validateOptions()) return false;
  80.  
  81.     for (var i = 0; i < MenuItems.length; i++) {
  82.         if (document.getElementById(MenuItems[i]).tagName.toLowerCase() == "checkbox") {
  83.             nsIPrefBranchObj.setBoolPref(OptionItems[i], MenuOptions.getOption(OptionItems[i]));
  84.         }
  85.     }
  86.     nsIPrefBranchObj.setBoolPref("usescroll", document.getElementById("imagezoomusemouseoptions").checked);
  87.     nsIPrefBranchObj.setIntPref("scrollvalue", document.getElementById("imagezoomscrollvalue").value);
  88.     nsIPrefBranchObj.setIntPref("scrollmode", document.getElementById("imagezoomscrollmode").value);
  89.  
  90.     nsIPrefBranchObj.setIntPref("zoomvalue", document.getElementById("imagezoomzoomvalue").value);
  91.     nsIPrefBranchObj.setBoolPref("autocenter", document.getElementById("imagezoomautocenter").checked);
  92.  
  93.     nsIPrefBranchObj.setIntPref("triggerbutton", document.getElementById("imagezoommouseaccess").value);
  94.     nsIPrefBranchObj.setIntPref("imagefitbutton", document.getElementById("imagezoomimagefitbutton").value);
  95.     nsIPrefBranchObj.setIntPref("imageresetbutton", document.getElementById("imagezoomimageresetbutton").value);
  96.     nsIPrefBranchObj.setBoolPref("toggleFitReset", document.getElementById("imagezoomtogglefitreset").checked);
  97.  
  98.     nsIPrefBranchObj.setBoolPref("reversescrollzoom", document.getElementById("imagezoomreversescroll").checked);
  99.  
  100. }
  101.  
  102. function validateOptions() {
  103.     if ((document.getElementById("imagezoommouseaccess").value == document.getElementById("imagezoomimagefitbutton").value) || (document.getElementById("imagezoommouseaccess").value == document.getElementById("imagezoomimageresetbutton").value) || ((document.getElementById("imagezoomimageresetbutton").value == document.getElementById("imagezoomimagefitbutton").value) && (document.getElementById("imagezoomimagefitbutton").value != 0))) {
  104.         alert(document.getElementById("bundle_ImageZoom").getString("op_mouse_error"));
  105.         return false;
  106.     }
  107.     return true;
  108. }
  109. // Mozilla calls this function when the options dialog is loaded
  110.  
  111.  
  112. function Startup() {
  113.     init();
  114. }
  115.  
  116. // Initialise options for Firefox and Thunderbird
  117.  
  118.  
  119. function imagezoom_initializeOptions() {
  120.  
  121.     document.getElementById("imagezoomusemouseoptions").checked = nsIPrefBranchObj.getBoolPref("usescroll");
  122.  
  123.     var scroll = nsIPrefBranchObj.getIntPref("scrollvalue");
  124.     var scrollValueBox = document.getElementById("imagezoomscrollvalue");
  125.     scrollValueBox.selectedItem = scrollValueBox.getElementsByAttribute("value", scroll)[0];
  126.  
  127.     var scroll = nsIPrefBranchObj.getIntPref("scrollmode");
  128.     var scrollValueBox = document.getElementById("imagezoomscrollmode");
  129.     scrollValueBox.selectedItem = scrollValueBox.getElementsByAttribute("value", scroll)[0];
  130.  
  131.     var scroll = nsIPrefBranchObj.getIntPref("triggerbutton");
  132.     var scrollValueBox = document.getElementById("imagezoommouseaccess");
  133.     scrollValueBox.selectedItem = scrollValueBox.getElementsByAttribute("value", scroll)[0];
  134.  
  135.     var scroll = nsIPrefBranchObj.getIntPref("imagefitbutton");
  136.     var scrollValueBox = document.getElementById("imagezoomimagefitbutton");
  137.     scrollValueBox.selectedItem = scrollValueBox.getElementsByAttribute("value", scroll)[0];
  138.  
  139.     var scroll = nsIPrefBranchObj.getIntPref("imageresetbutton");
  140.     var scrollValueBox = document.getElementById("imagezoomimageresetbutton");
  141.     scrollValueBox.selectedItem = scrollValueBox.getElementsByAttribute("value", scroll)[0];
  142.  
  143.     var zoom = nsIPrefBranchObj.getIntPref("zoomvalue");
  144.     var zoomValueBox = document.getElementById("imagezoomzoomvalue");
  145.     zoomValueBox.selectedItem = zoomValueBox.getElementsByAttribute("value", zoom)[0];
  146.  
  147.     document.getElementById("imagezoomautocenter").checked = nsIPrefBranchObj.getBoolPref("autocenter");
  148.     document.getElementById("imagezoomreversescroll").checked = nsIPrefBranchObj.getBoolPref("reversescrollzoom");
  149.     document.getElementById("imagezoomtogglefitreset").checked = nsIPrefBranchObj.getBoolPref("toggleFitReset");
  150.  
  151.     for (var i = 0; i < MenuItems.length; i++) {
  152.         MenuOptions.setOption(OptionItems[i], nsIPrefBranchObj.getBoolPref(OptionItems[i]));
  153.         document.getElementById(MenuItems[i]).setAttribute("hidden", false);
  154.     }
  155.  
  156.     setDisableAllChildren(document.getElementById('mouseoptions'), !document.getElementById("imagezoomusemouseoptions").checked);
  157.  
  158.     document.getElementById('rotateTab').setAttribute("hidden", (net.yellowgorilla.imagezoom.globals.getGeckoVersion() < "1.9"));
  159.  
  160.     setImageZoomMenu();
  161. }
  162.  
  163. function setImageZoomMenu() {
  164.  
  165.     // Display the correct menu items depending on options and whether an image was clicked
  166.     for (var i = 0; i < MenuItems.length; i++) {
  167.         if (document.getElementById(MenuItems[i]) == null) {
  168.             alert(MenuItems[i]);
  169.         }
  170.         document.getElementById(MenuItems[i]).setAttribute("checked", MenuOptions.getOption(OptionItems[i]));
  171.     }
  172.     // Show the Zoom Image container if there are subitems visible, else hide
  173.     if (document.getElementById("submenu").getElementsByAttribute("checked", true).length > 0) document.getElementById("context-zoomsub").checked = true;
  174.     else document.getElementById("context-zoomsub").checked = false;
  175.     // Show the Rotate Image container if there are subitems visible, else hide
  176.     if (document.getElementById("subrotatemenu").getElementsByAttribute("checked", true).length > 0) document.getElementById("context-rotatesub").checked = true;
  177.     else document.getElementById("context-rotatesub").checked = false;
  178. }
  179.  
  180. function setPreference(izCheck) {
  181.     var i;
  182.     for (i = 0; i < MenuItems.length; i++) {
  183.         if (izCheck.id == MenuItems[i]) break;
  184.     }
  185.  
  186.     MenuOptions.setOption(OptionItems[i], izCheck.checked);
  187. }
  188.  
  189. function setOption(izCheck) {
  190.     setPreference(izCheck);
  191.     setImageZoomMenu();
  192. }
  193.  
  194. function setDisableAllChildren(xulElement, disabled) {
  195.     for (var i = 0; i < xulElement.childNodes.length; i++) {
  196.         xulElement.childNodes[i].disabled = disabled;
  197.         setDisableAllChildren(xulElement.childNodes[i], disabled);
  198.     }
  199. }
  200.  
  201. function toggleSubMenu() {
  202.     var checkboxes = document.getElementById("submenu").getElementsByTagName("checkbox");
  203.     for (var i = 0; i < checkboxes.length; i++) {
  204.         checkboxes[i].checked = document.getElementById("context-zoomsub").checked;
  205.         setPreference(checkboxes[i]);
  206.     }
  207.     setImageZoomMenu();
  208. }
  209.  
  210.  
  211. function toggleRotateMenu() {
  212.     var checkboxes = document.getElementById("subrotatemenu").getElementsByTagName("checkbox");
  213.     for (var i = 0; i < checkboxes.length; i++) {
  214.         checkboxes[i].checked = document.getElementById("context-rotatesub").checked;
  215.         setPreference(checkboxes[i]);
  216.     }
  217.     setImageZoomMenu();
  218. }
  219.  
  220. function togglePercentages() {
  221.     var pctOption = document.getElementById("zoomsub-z100");
  222.     pctOption.checked = !pctOption.checked;
  223.     setOption(pctOption);
  224. }